package ca.etsmtl.log660;

import ca.etsmtl.log660.entity.Client;
import ca.etsmtl.log660.entity.Film;
import ca.etsmtl.log660.entity.Copie;
import ca.etsmtl.log660.entity.Langue;
import ca.etsmtl.log660.entity.Pays;
import ca.etsmtl.log660.entity.Genre;

import ca.etsmtl.log660.businessLogic.ConnexionController;
import ca.etsmtl.log660.businessLogic.FilmController;

import ca.etsmtl.log660.configuration.SessionFactoryHelper;
import org.hibernate.SessionFactory;
import org.hibernate.Session;

import java.util.*; 

public class Main{
	public static void main(String argv[]) {
		//Use Case #1 : Connexion
		if(ConnexionController.getInstance().ValideAuthentification("KrisWEllison10@hotmail.com", "uc2Vohka")){
			/*System.out.println(ConnexionController.getInstance().getClient().getNom());
			
			//Use Case #2 : Rechercher une film
			ArrayList<Film> filmsRecherches = 
				FilmController.getInstance().getFilms("ll", 
													  "EngliSh",
													   1954, 
													   2003,
													   new ArrayList<String>(Arrays.asList("Jean")), 
													   new ArrayList<String>(), 
													   new ArrayList<String>());
			System.out.println("films trouvés");
			System.out.println("-----");
			for (Film film : filmsRecherches){
				System.out.println(film.toString());
			}
			
			//Use Case #3 : Louer une copie d'un film
			FilmController.getInstance().rentFilm(120647);
		}
		ArrayList<Langue> langues = FilmController.getInstance().getLangues();
		for(Langue langue : langues){
			System.out.println(langue);
		}
		
		ArrayList<Pays> payss = FilmController.getInstance().getPays();
		for(Pays pays : payss){
			System.out.println(pays);
		}
		
		ArrayList<Genre> Genres = FilmController.getInstance().getGenres();
		for(Genre Genre : Genres){
			System.out.println(Genre);
		}*/
		ArrayList<Film> films = testGetFilms4();
		
		//FilmController.getInstance().rentFilm(120647);
		//System.out.println(ConnexionController.getInstance().getForfait().getLocationMax());
		//System.out.println(FilmController.getInstance().filmEnPossessionDuClient());
		Film monFilm = FilmController.getInstance().getTouteLesInformationsFilms(films.get(0));
	}}
		
	public static ArrayList<Film> testGetFilms4() {
		ArrayList<Film> myfilms = FilmController.getInstance().getFilms("The", "", 2000, -1, new ArrayList<String>(), "", new ArrayList<String>(), new ArrayList<String>());
		return myfilms;
	}
	
	public static void testGetFilms9() {
		ArrayList<String> myacteurs = new ArrayList<String>();
		myacteurs.add("abi");
		ArrayList<Film> myfilms = FilmController.getInstance().getFilms("The", "english", 2000, 2004, myacteurs, "", new ArrayList<String>(), new ArrayList<String>());
	}
	
	public static void testGetFilms13() {
		ArrayList<String> myacteurs = new ArrayList<String>();
		myacteurs.add("abi");
		
		ArrayList<String> mypays = new ArrayList<String>();
		mypays.add("usa");
		
		ArrayList<Film> myfilms = FilmController.getInstance().getFilms("", "", -1, -1, new ArrayList<String>(), "bi", new ArrayList<String>(), mypays);
	}

	
	
	public static void readFilm(){
		Session session = SessionFactoryHelper.getSessionFactory().openSession();
		session.beginTransaction();
		List lesFilms = session.createQuery("From Film F").list();
		
		for(Iterator iFilm = lesFilms.iterator(); iFilm.hasNext();){
			Film film = (Film) iFilm.next();
			System.out.println("titre: " + film.getTitre());
		}
			
		session.getTransaction().commit();
		session.close();
	}
	
	
	//Test Recherche Film
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "FreNCH", -1, -1);
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "FreNCH", 1953, -1);
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "FreNCH", 1954, -1);
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "FreNCH", 1954, 2000);
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "FreNCH", 1954, 2001);
	//ArrayList<Film> filmsRecherches = FilmController.getInstance().getFilms("", "EngliSh", 1954, 2020,
	//	new ArrayList<String>(Arrays.asList("Drama","Canada")));

}